package com.eshop.modules.activity.domain;

import cn.hutool.core.bean.BeanUtil;
import cn.hutool.core.bean.copier.CopyOptions;
import com.fasterxml.jackson.annotation.JsonFormat;
import com.baomidou.mybatisplus.annotation.FieldFill;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import java.io.Serializable;

@TableName("store_visit")
public class StoreVisit implements Serializable
{
    @TableId
    private Long id;
    private Long productId;
    private String productType;
    private Integer cateId;
    private String type;
    private Long uid;
    private Integer count;
    private String content;
    @TableField(fill = FieldFill.INSERT)
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
    private Integer addTime;
    
    public void copy(final StoreVisit source) {
        BeanUtil.copyProperties((Object)source, (Object)this, CopyOptions.create().setIgnoreNullValue(true));
    }
    
    public static StoreVisitBuilder builder() {
        return new StoreVisitBuilder();
    }
    
    public Long getId() {
        return this.id;
    }
    
    public Long getProductId() {
        return this.productId;
    }
    
    public String getProductType() {
        return this.productType;
    }
    
    public Integer getCateId() {
        return this.cateId;
    }
    
    public String getType() {
        return this.type;
    }
    
    public Long getUid() {
        return this.uid;
    }
    
    public Integer getCount() {
        return this.count;
    }
    
    public String getContent() {
        return this.content;
    }
    
    public Integer getAddTime() {
        return this.addTime;
    }
    
    public void setId(final Long id) {
        this.id = id;
    }
    
    public void setProductId(final Long productId) {
        this.productId = productId;
    }
    
    public void setProductType(final String productType) {
        this.productType = productType;
    }
    
    public void setCateId(final Integer cateId) {
        this.cateId = cateId;
    }
    
    public void setType(final String type) {
        this.type = type;
    }
    
    public void setUid(final Long uid) {
        this.uid = uid;
    }
    
    public void setCount(final Integer count) {
        this.count = count;
    }
    
    public void setContent(final String content) {
        this.content = content;
    }
    
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
    public void setAddTime(final Integer addTime) {
        this.addTime = addTime;
    }
    
    @Override
    public String toString() {
        return "StoreVisit(id=" + this.getId() + ", productId=" + this.getProductId() + ", productType=" + this.getProductType() + ", cateId=" + this.getCateId() + ", type=" + this.getType() + ", uid=" + this.getUid() + ", count=" + this.getCount() + ", content=" + this.getContent() + ", addTime=" + this.getAddTime() + ")";
    }
    
    @Override
    public boolean equals(final Object o) {
        if (o == this) {
            return true;
        }
        if (!(o instanceof StoreVisit)) {
            return false;
        }
        final StoreVisit other = (StoreVisit)o;
        if (!other.canEqual(this)) {
            return false;
        }
        final Object this$id = this.getId();
        final Object other$id = other.getId();
        Label_0065: {
            if (this$id == null) {
                if (other$id == null) {
                    break Label_0065;
                }
            }
            else if (this$id.equals(other$id)) {
                break Label_0065;
            }
            return false;
        }
        final Object this$productId = this.getProductId();
        final Object other$productId = other.getProductId();
        Label_0102: {
            if (this$productId == null) {
                if (other$productId == null) {
                    break Label_0102;
                }
            }
            else if (this$productId.equals(other$productId)) {
                break Label_0102;
            }
            return false;
        }
        final Object this$cateId = this.getCateId();
        final Object other$cateId = other.getCateId();
        Label_0139: {
            if (this$cateId == null) {
                if (other$cateId == null) {
                    break Label_0139;
                }
            }
            else if (this$cateId.equals(other$cateId)) {
                break Label_0139;
            }
            return false;
        }
        final Object this$uid = this.getUid();
        final Object other$uid = other.getUid();
        Label_0176: {
            if (this$uid == null) {
                if (other$uid == null) {
                    break Label_0176;
                }
            }
            else if (this$uid.equals(other$uid)) {
                break Label_0176;
            }
            return false;
        }
        final Object this$count = this.getCount();
        final Object other$count = other.getCount();
        Label_0213: {
            if (this$count == null) {
                if (other$count == null) {
                    break Label_0213;
                }
            }
            else if (this$count.equals(other$count)) {
                break Label_0213;
            }
            return false;
        }
        final Object this$addTime = this.getAddTime();
        final Object other$addTime = other.getAddTime();
        Label_0250: {
            if (this$addTime == null) {
                if (other$addTime == null) {
                    break Label_0250;
                }
            }
            else if (this$addTime.equals(other$addTime)) {
                break Label_0250;
            }
            return false;
        }
        final Object this$productType = this.getProductType();
        final Object other$productType = other.getProductType();
        Label_0287: {
            if (this$productType == null) {
                if (other$productType == null) {
                    break Label_0287;
                }
            }
            else if (this$productType.equals(other$productType)) {
                break Label_0287;
            }
            return false;
        }
        final Object this$type = this.getType();
        final Object other$type = other.getType();
        Label_0324: {
            if (this$type == null) {
                if (other$type == null) {
                    break Label_0324;
                }
            }
            else if (this$type.equals(other$type)) {
                break Label_0324;
            }
            return false;
        }
        final Object this$content = this.getContent();
        final Object other$content = other.getContent();
        if (this$content == null) {
            if (other$content == null) {
                return true;
            }
        }
        else if (this$content.equals(other$content)) {
            return true;
        }
        return false;
    }
    
    protected boolean canEqual(final Object other) {
        return other instanceof StoreVisit;
    }
    
    @Override
    public int hashCode() {
        final int PRIME = 59;
        int result = 1;
        final Object $id = this.getId();
        result = result * 59 + (($id == null) ? 43 : $id.hashCode());
        final Object $productId = this.getProductId();
        result = result * 59 + (($productId == null) ? 43 : $productId.hashCode());
        final Object $cateId = this.getCateId();
        result = result * 59 + (($cateId == null) ? 43 : $cateId.hashCode());
        final Object $uid = this.getUid();
        result = result * 59 + (($uid == null) ? 43 : $uid.hashCode());
        final Object $count = this.getCount();
        result = result * 59 + (($count == null) ? 43 : $count.hashCode());
        final Object $addTime = this.getAddTime();
        result = result * 59 + (($addTime == null) ? 43 : $addTime.hashCode());
        final Object $productType = this.getProductType();
        result = result * 59 + (($productType == null) ? 43 : $productType.hashCode());
        final Object $type = this.getType();
        result = result * 59 + (($type == null) ? 43 : $type.hashCode());
        final Object $content = this.getContent();
        result = result * 59 + (($content == null) ? 43 : $content.hashCode());
        return result;
    }
    
    public StoreVisit(final Long id, final Long productId, final String productType, final Integer cateId, final String type, final Long uid, final Integer count, final String content, final Integer addTime) {
        this.id = id;
        this.productId = productId;
        this.productType = productType;
        this.cateId = cateId;
        this.type = type;
        this.uid = uid;
        this.count = count;
        this.content = content;
        this.addTime = addTime;
    }
    
    public StoreVisit() {
    }
    
    public static class StoreVisitBuilder
    {
        private Long id;
        private Long productId;
        private String productType;
        private Integer cateId;
        private String type;
        private Long uid;
        private Integer count;
        private String content;
        private Integer addTime;
        
        StoreVisitBuilder() {
        }
        
        public StoreVisitBuilder id(final Long id) {
            this.id = id;
            return this;
        }
        
        public StoreVisitBuilder productId(final Long productId) {
            this.productId = productId;
            return this;
        }
        
        public StoreVisitBuilder productType(final String productType) {
            this.productType = productType;
            return this;
        }
        
        public StoreVisitBuilder cateId(final Integer cateId) {
            this.cateId = cateId;
            return this;
        }
        
        public StoreVisitBuilder type(final String type) {
            this.type = type;
            return this;
        }
        
        public StoreVisitBuilder uid(final Long uid) {
            this.uid = uid;
            return this;
        }
        
        public StoreVisitBuilder count(final Integer count) {
            this.count = count;
            return this;
        }
        
        public StoreVisitBuilder content(final String content) {
            this.content = content;
            return this;
        }
        
        @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
        public StoreVisitBuilder addTime(final Integer addTime) {
            this.addTime = addTime;
            return this;
        }
        
        public StoreVisit build() {
            return new StoreVisit(this.id, this.productId, this.productType, this.cateId, this.type, this.uid, this.count, this.content, this.addTime);
        }
        
        @Override
        public String toString() {
            return "StoreVisit.StoreVisitBuilder(id=" + this.id + ", productId=" + this.productId + ", productType=" + this.productType + ", cateId=" + this.cateId + ", type=" + this.type + ", uid=" + this.uid + ", count=" + this.count + ", content=" + this.content + ", addTime=" + this.addTime + ")";
        }
    }
}
